package com.biz.primus.model.order.coupon.vo.consume;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.*;

import java.io.Serializable;
import java.util.List;

/**
 * 销售明细
 *
 * @author Tiger Feng
 * @date 2017年11月16日
 */
@Data
public class SellDetailVO implements Serializable{
    private static final long serialVersionUID = 3636019902752892413L;

    // 行号 --必须
    @JsonProperty("rowno")
    private Integer rowNo;
    // 编码标志 0 赠品 1 普通单品 9 印花码 Z 不参加促销 --必须
    @JsonProperty("flag")
    private FlagEnum flag;
    // 经营公司 --必须
    @JsonProperty("mana_unit")
    private String manaUnit;
    // 门店 --必须
    @JsonProperty("market")
    private String market;
    // 商品代码(SKU子码销售时填对应的SPU母码) --必须
    @JsonProperty("itemcode")
    private String itemCode;
    // 商品名称
    @JsonProperty("itemname")
    private String itemName;
    // 商品条码
    @JsonProperty("barcode")
    private String barCode;
    // 单位(SKU子码销售时填对应的SKU子码)
    @JsonProperty("unitcode")
    private String unitCode;
    // 包装含量
    @JsonProperty("factor")
    private Double factor;
    // 预留维度1
    @JsonProperty("gz")
    private String gz;
    // 预留维度2
    @JsonProperty("counter")
    private String counter;
    // 品牌
    @JsonProperty("brand")
    private String brand;
    // 类别
    @JsonProperty("category")
    private String category;
    // 预留维度3
    @JsonProperty("supplier")
    private String supplier;
    // 预留维度4
    @JsonProperty("contract")
    private String contract;
    // 预留维度5
    @JsonProperty("klm")
    private String klm;
    // 预留维度6
    @JsonProperty("poptag")
    private String popTag;
    // 件数 --必须
    @JsonProperty("qty")
    private Double quantity;
    // 售价 --必须
    @JsonProperty("price")
    private Double price;
    // 售价金额
    @JsonProperty("list_amount")
    private Double listAmount;
    // 总折扣
    @JsonProperty("total_discount")
    private Double totalDiscount;
    // 成交金额
    @JsonProperty("sale_amount")
    private Double saleAmount;
    // 原订单号--退货专用
    @JsonProperty("original_billno")
    private String originalBillNo;
    // 原商品行--退货专用
    @JsonProperty("original_rowno")
    private Integer originalRowNo;
    // 促销清单表
    @JsonProperty("pop_details")
    private List<PopDetailVO> popDetails;
    // 用券分摊表
    @JsonProperty("coupon_uses")
    private List<CouponUseVO> couponUses;
    // 返券分摊表
    @JsonProperty("coupon_gains")
    private List<CouponGainVO> couponGains;
    // 退货子单号
    @JsonProperty("return_billno")
    private String returnBillNo;

    @AllArgsConstructor
    public enum FlagEnum{
        //编码标志
        //0 赠品
        //1 普通单品
        //9 印花码
        //Z 不参加促销
        COMPLIMENTARY("0"),
        COMMON("1"),
        PRINT("9"),
        NONE("Z"),
        ;
        private String value;
        @Override
        public String toString() {
            return value;
        }
    }
}
